home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 2000
/
MacHack 2000.toast
/
pc
/
The Hacks
/
Hex Shortcuts (PalmOS)
/
Src
/
grfpatch2.c
< prev
next >
Wrap
Text File
|
2000-06-23
|
2KB
|
87 lines
/* Hex Shortcuts
* Written Jan 2000 by Allon Stern
* FREEWARE
* Feel free to use this code for working your own hacks, or
* extend the functionality!
* However, please don't distribute modified versions as "Hex Shortcuts" or
* under my name.
* If you have ideas you want me to incorporate into Hex Shortcuts, send me
* email at allon+palm@radioactive.org
*/
#include <Pilot.h>
#include <SysEvtMgr.h>
#include <Graffiti.h>
/***********************************************************************
*
* Internal Constants
*
***********************************************************************/
#define kHackFileCreator 'HexS'
#define kHackCodeID 1001
/***********************************************************************
*
* Function Prototypes
*
***********************************************************************/
Err MyGrfGetMacro(CharPtr nameP, BytePtr macroDataP, WordPtr dataLenP);
Err MyGrfGetMacro(CharPtr nameP, BytePtr macroDataP, WordPtr dataLenP)
{
Err (*oldtrap)(CharPtr, BytePtr, WordPtr);
DWord temp; // for the feature manager call type checking
Err err;
Byte data = 0;
int looksRight;
// Get the address of the old routine from HackMaster:
err = FtrGet(kHackFileCreator,kHackCodeID,&temp);
ErrFatalDisplayIf(err, "can't get real trap address");
oldtrap=(Err (*)(CharPtr, BytePtr, WordPtr))temp;
looksRight = true;
if (nameP[0] != '0')
looksRight = false;
if (nameP[1] && nameP[1] != 'x')
looksRight = false;
if (nameP[1] && nameP[2] &&
!((nameP[2] >= '0' && nameP[2] <= '9') || (nameP[2] >= 'a' && nameP[2] <= 'f')))
looksRight = false;
if (nameP[1] && nameP[2] && nameP[3] &&
!((nameP[3] >= '0' && nameP[3] <= '9') || (nameP[3] >= 'a' && nameP[3] <= 'f')))
looksRight = false;
if (looksRight && nameP[0] && nameP[1] && nameP[2] && nameP[3]) {
if (nameP[2] >= '0' && nameP[2] <= '9')
data |= (nameP[2] - '0') << 4;
else if (nameP[2] >= 'a' && nameP[2] <= 'f')
data |= ((nameP[2] - 'a') + 0x0A) << 4;
else return oldtrap (nameP, macroDataP, dataLenP);
if (nameP[3] >= '0' && nameP[3] <= '9')
data |= (nameP[3] - '0');
else if (nameP[3] >= 'a' && nameP[3] <= 'f')
data |= ((nameP[3] - 'a')) + 0x0A;
else return oldtrap (nameP, macroDataP, dataLenP);
if (dataLenP) {
macroDataP[0] = data;
*dataLenP = 1;
return 0;
}
return oldtrap (nameP, macroDataP, dataLenP);
}
if (looksRight) {
return grfErrMacroIncomplete;
}
return oldtrap (nameP, macroDataP, dataLenP);
}